package iterator

//迭代器模式是一种行为设计模式， 让你能在不暴露集合底层表现形式 （列表、 栈和树等） 的情况下遍历集合中所有的元素。
//迭代器模式的主要思想是将集合的遍历行为抽取为单独的迭代器对象。
//迭代器通常会提供一个获取集合元素的基本方法。 客户端可不断调用该方法直至它不返回任何内容， 这意味着迭代器已经遍历了所有元素。

/*


 单一职责原则。 通过将体积庞大的遍历算法代码抽取为独立的类， 你可对客户端代码和集合进行整理。
     开闭原则。 你可实现新型的集合和迭代器并将其传递给现有代码， 无需修改现有代码。
     你可以并行遍历同一集合， 因为每个迭代器对象都包含其自身的遍历状态。
     相似的， 你可以暂停遍历并在需要时继续。

 如果你的程序只与简单的集合进行交互， 应用该模式可能会矫枉过正。
     对于某些特殊集合， 使用迭代器可能比直接遍历的效率低。


你可以使用迭代器模式来遍历组合模式树。
    你可以同时使用工厂方法模式和迭代器来让子类集合返回不同类型的迭代器， 并使得迭代器与集合相匹配。
    你可以同时使用备忘录模式和迭代器来获取当前迭代器的状态， 并且在需要的时候进行回滚。
    可以同时使用访问者模式和迭代器来遍历复杂数据结构， 并对其中的元素执行所需操作， 即使这些元素所属的类完全不同。

*/
